package persistencia;

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */


import java.awt.Color;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.JComboBox;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.SwingConstants;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
import modelo.Urgencia;



/**
 * Clase de acceso a una base de datos
 * @author Guille
 */
public class UrgenciasDBManager {

    private static Connection conexion;
    private static Statement comando;
    private static DefaultTableModel modelo;
    

     /**
     * Inserta una urgencia en la base de datos.
     * @param urg
     * @throws java.sql.SQLException Indica un error de acceso a la base de 
     * datos.
     */
    public static void addUrgencia(Urgencia urg) throws java.sql.SQLException {
        try {
            comando = conexion.createStatement();
            
            String newId="";
            String sql;
            ResultSet registros=comando.executeQuery("select max(idUrgencia)+1 as newId from sge_dam2b.urgencias;");
            while(registros.next()){
                newId = registros.getString("newId");
            }
            sql = "insert into urgencias (idUrgencia,fechaUrgencia,fechaAlta,idPA) values (" + newId + " ,'"+urg.getFechaUrgencia()+"','"+ urg.getFechaAlta()+"',"+ urg.getIdPA()+");";
            comando.executeUpdate(sql);            
            
        } catch (SQLException ex) {
            ex.printStackTrace();
            System.err.println("ERROR. DBManager.addUrgencia(). Error de SQL.");
            throw ex;
        }
    }
    /*
     * Borra una urgencia en la base de datos.
     * @param urg
     * @throws java.sql.SQLException Indica un error de acceso a la base de 
     * datos.
     */
        public static void deleteUrgencia(int id) throws java.sql.SQLException{
            
        try {
            comando = conexion.createStatement();
            ResultSet resultado = comando.executeQuery("select * from sge_dam2b.urgencias where idUrgencia=" + "'" + id + "'");

            if (resultado.next()) {
                comando = conexion.createStatement();
                comando.executeUpdate("delete from sge_dam2b.urgencias where idUrgencia=" + "'" + id + "'");
            }
        } catch (SQLException ex) {
            throw ex;
        }
    }
        
     /**
     * Rellena el combobox de las urgencias.
     * @param jcb
     */
    public static void rellenarComboBoxUrgencia(JComboBox jcb) {
        
        jcb.removeAllItems();

        try {
                int urg;
                comando = conexion.createStatement();
                ResultSet resultado = comando.executeQuery("select * from sge_dam2b.urgencias ");
                while (resultado.next()) {
                    urg = resultado.getInt("idUrgencia");
                    jcb.addItem(urg);
                }
            
            jcb.setSelectedIndex(0);

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    /**
     * Rellena el combobox de los procesos asistenciales.
     * @param jcb 
     */
    public static void rellenarComboBoxPA(JComboBox jcb) {
        
        jcb.removeAllItems();

        try {
                int id;
                comando = conexion.createStatement();
                ResultSet resultado = comando.executeQuery("select * from sge_dam2b.proceso_asistencial ");
                while (resultado.next()) {
                    id = resultado.getInt("idPA");
                    jcb.addItem(id);
                }
            
            jcb.setSelectedIndex(0);

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    /**
     * Modifica una urgencia en la base de datos.
     * @param urgenciaVieja
     * @param urgenciaNueva
     * @throws java.sql.SQLException Indica un error de acceso a la base de 
     * datos.
     */
        public static void updateUrgencia(Urgencia urgenciaVieja, Urgencia urgenciaNueva)throws java.sql.SQLException {

        try {
            comando = conexion.createStatement();
            ResultSet resultado = comando.executeQuery("select * from sge_dam2b.urgencias where idUrgencia=" + "'" + urgenciaVieja.getId()+ "'");
           
            if(resultado.next()){
                comando = conexion.createStatement();
                comando.executeUpdate("update sge_dam2b.urgencias set idUrgencia=" + urgenciaNueva.getId() + " , fechaUrgencia='"
                            + urgenciaNueva.getFechaUrgencia() + "' , fechaAlta='" + urgenciaNueva.getFechaAlta()
                            + "' , idPA=" + urgenciaNueva.getIdPA()
                            +  " WHERE idUrgencia='" + urgenciaVieja.getId() + "'");
            }
        }
         catch (SQLException ex) {
            throw ex;
        }
    }
    
    /**
     * Realiza las consultas de las urgencias.
     * @param urg Urgencia a consultar.
     * @param table
     * @param jScrollPane
     * @throws java.sql.SQLException Indica un error de acceso a la base de 
     * datos.
     */
    public static void consultarUrgencia(Urgencia urg, JTable table, JScrollPane jScrollPane) throws java.sql.SQLException{

        try {
            comando = conexion.createStatement();
            
            ResultSet resultado = comando.executeQuery("SELECT * FROM sge_dam2b.urgencias WHERE fechaUrgencia>='"+urg.getFechaUrgencia()+"'");             
            
            modelo = new DefaultTableModel();
            String col1 = "ID";
            String col2 = "Fecha Urgencia";
            String col3 = "Fecha Alta";
            String col4 = "Proceso Asistencial";
            modelo.addColumn(col1);
            modelo.addColumn(col2);
            modelo.addColumn(col3);
            modelo.addColumn(col4);
            int id = 0;
            String fechaAlta = "";
            String fechaUrgenciaS = "";
            int pa = 0;
            Object[] array = new Object[4];
            while (resultado.next()) {
                id = resultado.getInt("idUrgencia");
                fechaAlta = resultado.getString("fechaAlta");
                fechaUrgenciaS = resultado.getString("fechaUrgencia");
                pa=resultado.getInt("idPA");

                array[0] = id;
                array[1] = fechaAlta;
                array[2] = fechaUrgenciaS;
                array[3] = pa;
                modelo.addRow(array);
            }
            table.setModel(modelo);
            table.setEnabled(false);
            table.getTableHeader().setReorderingAllowed(false);
            table.getTableHeader().setResizingAllowed(false);
            
            DefaultTableCellRenderer alineacion = new DefaultTableCellRenderer();
            alineacion.setHorizontalAlignment(SwingConstants.LEFT);
            for (int i = 0; i < 3; i++) {
                table.getColumnModel().getColumn(i).setCellRenderer(alineacion);
            }
            table.getColumnModel().getColumn(0).setPreferredWidth(20);
            table.getColumnModel().getColumn(3).setPreferredWidth(100);
            jScrollPane.getViewport().setBackground(Color.LIGHT_GRAY);
        } catch (SQLException ex) {
            throw ex;
        }
    }
    /**
     * Realiza las consultas de las urgencias.
     * @param table
     * @param jScrollPane
     * @throws java.sql.SQLException 
     */
    public static void consultarUrgenciaTodos(JTable table, JScrollPane jScrollPane) throws java.sql.SQLException{

        try {

            comando = conexion.createStatement();
            ResultSet resultado = comando.executeQuery("SELECT * FROM sge_dam2b.urgencias");
            modelo = new DefaultTableModel();
            String col1 = "ID";
            String col2 = "Fecha Urgencia";
            String col3 = "Fecha Alta";
            String col4 = "Proceso Asistencial";
            modelo.addColumn(col1);
            modelo.addColumn(col2);
            modelo.addColumn(col3);
            modelo.addColumn(col4);
            int id = 0;
            String fechaAlta = "";
            String fechaUrgencia = "";
            int pa = 0;
            Object[] array = new Object[4];
            while (resultado.next()) {
                id = resultado.getInt("idUrgencia");
                fechaAlta = resultado.getString("fechaAlta");
                fechaUrgencia = resultado.getString("fechaUrgencia");
                pa=resultado.getInt("idPA");

                array[0] = id;
                array[1] = fechaAlta;
                array[2] = fechaUrgencia;
                array[3] = pa;
                modelo.addRow(array);
            }
            table.setModel(modelo);
            table.setEnabled(false);
            table.getTableHeader().setReorderingAllowed(false);
            table.getTableHeader().setResizingAllowed(false);
            
            DefaultTableCellRenderer alineacion = new DefaultTableCellRenderer();
            alineacion.setHorizontalAlignment(SwingConstants.LEFT);
            for (int i = 0; i < 3; i++) {
                table.getColumnModel().getColumn(i).setCellRenderer(alineacion);
            }
            table.getColumnModel().getColumn(0).setPreferredWidth(20);
            table.getColumnModel().getColumn(3).setPreferredWidth(100);
            jScrollPane.getViewport().setBackground(Color.LIGHT_GRAY);
        } catch (SQLException ex) {
            throw ex;
        }
    }
}

